导航菜单
首页 >  nodeJs实现微信小程序的图片上传  > 多张图片上传(源码分享+实现分析)

多张图片上传(源码分享+实现分析)

本篇文章以小程序中的代表【微信小程序】为例,分享一下在微信小程序中实现多图上传的源码实现。

代码片段(可导入微信WEB开发者工具体验):https://developers.weixin.qq.com/s/DHrt69mk7af3

两种不同实现方法的优缺点,请查看我的 博客原创文章,在文章中有详细的说明

小程序 多张图片上传 文章地址:https://blog.csdn.net/u013350495/article/details/104326088。

源码:

const app = getApp() Page({  data: {    // 已选择上传的本地图片地址    urlArr:['helang.jpg','1846492969.jpg','web.jpg']  },  onLoad: function () {      },  // 多图上传-回调式  uploadCallback(){    let index = 0;  // 当前位置,标识已上传到第几张图片    let newUrls = []; // 上传成功后的图片地址数组    // 图片上传方法    let upload = ()=>{      let nowUrl = this.data.urlArr[index]; //当前待上传的图片地址      wx.showLoading({        title: '正在上传',      });      /*         无图片上传接口,收setTimeout 模拟延迟状态        项目中替换为 wx.uploadFile 即可      */      // 假设每 1000ms 上传一张图片      setTimeout(()=>{        // 此处为已上传成功后的回调函数内容        let resUrl = `服务器返回上传后的地址 ${nowUrl}`; //假设这是上传成功后返回的地址        newUrls.push(resUrl); // 将上传后的地址添加到成功数组中         // 判断图片是否已经全部上传完成        if (index >= (this.data.urlArr.length-1)){          send();        }else{           //未全部上传完时标识位置+1并再次调用上传方法          index++;           upload();        }      },1000);    }    // 发送方法,用作图片上传完后,得到图片地址提交给其它接口或其它操作    let send = () => {      // 关闭加载提示      wx.hideLoading();      wx.showToast({        title: '上传成功',        icon:'success'      })       // 输出已经上传完的图片地址,请查看控制台结果      console.log(newUrls);    }     // 调用上传方法    upload();  },  // 多图上传-Promise  uploadPromise(){    /* Promise 对象数组 */    let p_arr = [];     /* 新建 Promise 方法,nowUrl参数为当前上传的图片地址 */    let new_p = (nowUrl) => {      return new Promise((resolve, reject) => {        /*         无图片上传接口,收setTimeout 模拟延迟状态        项目中替换为 wx.uploadFile 即可        */        // 假设每 1000ms 上传一张图片        setTimeout(()=>{          // 此处为已上传成功后的回调函数内容          let resUrl = `服务器返回上传后的地址 ${nowUrl}`; //假设这是上传成功后返回的地址          resolve(resUrl);        },1000);      })    }        // 遍历数据,创建相应的 Promise 数组数据    this.data.urlArr.forEach((item, index) => {      let nowUrl = this.data.urlArr[index]; //当前待上传的图片地址      p_arr.push(new_p(nowUrl));    });        wx.showLoading({      title: '正在上传',    });    /* 所有图片上传完成后调用该方法 */    Promise.all(p_arr).then((res) => {      // 关闭加载提示      wx.hideLoading();      wx.showToast({        title: '上传成功',        icon: 'success'      })      // 输出已经上传完的图片地址,请查看控制台结果      console.log(res);    });  }})

相关推荐: